home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 26.zip / BS1 part 26 / Powervisor v1.10b disk1.adf / Source / CopyLogWin.c < prev    next >
C/C++ Source or Header  |  1991-09-15  |  1KB  |  44 lines

  1. /* Routine to copy the contents of the active logical window to the
  2.     memory given on the commandline
  3.  
  4. Compile with :
  5.     lc -v -cmsw -O CopyLogWin
  6.     blink CopyLogWin.o to CopyLogWin lib pv:pvdevelop/lib/PVCallStub.lib
  7. */
  8.  
  9.  
  10.  
  11. #include <exec/types.h>
  12. #include "pv:PVDevelop/include/PV/screenbase.h"
  13. #include "pv:PVDevelop/include/PV/pvcallroutines.h"
  14. #include <pragmas/exec.h>
  15. #include <pragmas/keymap.h>
  16. #include <string.h>
  17.  
  18. APTR PVCallTable;
  19.  
  20. int __saveds __asm CopyLogWin (register __a0 char *cmdline, register __a2 APTR table[])
  21. {
  22.     struct ScreenBase *ScreenBase;
  23.     struct LogicalWindow *ActiveLogWin;
  24.     PVBLOCK block;
  25.     WORD Cols,Lines,i,j;
  26.     APTR *buf;
  27.  
  28.     PVCallTable = table;
  29.  
  30.     ScreenBase = PVCGetScreenBase ();
  31.  
  32.     ActiveLogWin = ScreenBase->TheGlobal->ActiveLogWin;
  33.     block = (PVBLOCK)PVCEvaluate (cmdline);
  34.  
  35.     *(UWORD *)block = Lines = ActiveLogWin->NrLinesInBuf;
  36.     *(((UWORD *)block)+1) = Cols = ActiveLogWin->NrColsInLine;
  37.     buf = (APTR *)(ActiveLogWin->Buffer);
  38.  
  39.     for (i=0 ; i<Lines ; i++)
  40.         if (buf[i])
  41.             for (j=0 ; j<Cols ; j++)
  42.                 *(((UBYTE *)block)+4+i*Cols+j) = ((UBYTE *)buf[i])[j];
  43. }
  44.